#ifndef _SKYBOXRENDERPASS_H_
#define _SKYBOXRENDERPASS_H_
#include <SERender/Renderer/RenderPass/RenderPass.h>
#include <SERender/Resourses/FrameBuffer.h>
#include <SEngine/Util/RenderPassGUIHandler.h>
namespace SEngine
{

    class SkyboxRenderPass : public RenderPass, public RenderPassGUIHandler
    {
        // 用于PBR渲染
        struct IBLTexture
        {
            uint32_t textureID{(uint32_t)-1};
            std::shared_ptr<Texture2D> irradianceMap;
            std::shared_ptr<Texture2D> preFilterMap; 
            std::shared_ptr<Texture2D> brdfLUTTex;
        };
    public:
        SkyboxRenderPass(Renderer & renderer);
        virtual ~SkyboxRenderPass() = default;
        virtual void BeginFrame() override;
        virtual void DrawFrame() override;
        virtual void EndFrame() override {}

    private:
        std::unique_ptr<FrameBuffer> m_fbo;
        IBLTexture m_textures;
    };
} // namespace SEngine


#endif